﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Insifo.WE;
using System.Text.RegularExpressions;
using System.Collections.Specialized;


public partial class gcgContenidoEditar : ObjectPage
{
    #region CONSTANTES

    private const string RUTA_EDICION = "~/gcg/gcgContenidoSeccionEditar.aspx";

    #endregion

    #region EVENTOS

    protected void Page_Load(object sender, EventArgs e)
    {
        //Eventos del Master
        Master.MenuAccionEvento += new MasterPageMenuEditarClickHandler(Master_MenuButton);
        if (!IsPostBack)
        {
            Cargar();
        }
    }

    protected void Master_MenuButton(object sender, EventArgs e)
    {
        string strAccion = ((CommandEventArgs)e).CommandName;
        switch (strAccion)
        {
            case "Aceptar":
                Guardar("G");
                break;
            case "Aplicar":
                Guardar("A");
                break;
            case "Cancelar":
                Salir();
                break;
        }
    }

    #endregion

    #region METODOS

    protected void Cargar()
    {
        string strAccion = Request.QueryString["a"];   //a: N-Nuevo, e-Editar, v-Ver
        string strId = Request.QueryString["i"];  //Id

        //Eventos Java Script
        this.Master.MenuAceptar.Attributes.Add("OnClick", "javascript:return fnValidar();");
        //Carga Estado
        DataTable dt = ListarParametroDetalle(1, 1, Constantes.PARAMETRO_ESTADOREGISTRO);
        Util.loadCombo(ddlEstado, dt, "Descripcion", "ParametroDetalle");

        switch (strAccion)
        {
            case "e":

                string strSubTitulo = string.Format("{0} <img height='10' src='../img/ico_sig.png' width='10'/> {1}", Resources.resDiccionario.Editar, Resources.resDiccionario.Contenidos);
                Master.SubTitulo.Text = strSubTitulo;
                Editar(strAccion, strId);
                break;
            default:
               Master.SubTitulo.Text =  Resources.resDiccionario.Unknow;
                break;
        }
    }


    protected void Editar(string pstrAccion, string pstrId)
    {

        WCContenido.BEContenido be = new WCContenido.BEContenido
        {
            IdContenido = Int32.Parse(pstrId)
        };
        be = ObtenerContenido(be);


        hfIdSeccion.Value = Request.QueryString["is"];   //a: N-Nuevo, e-Editar, v-Ver
        hfAccionSecc.Value = Request.QueryString["as"];  //Id

        hfIdContenido.Value = pstrId;

        hfAccion.Value = pstrAccion; //Editar/Eliminar
        txtTitulo.Text = be.Titulo;
        txtCodigoContenido.Text = be.CodigoContenido;
        txtIntroduccion.Text = be.TextoIntro;
        txtTextoCompleto.Text = be  .TextoCompleto;

        txtMetaClave.Text = be.MetaClave;
        txtMetaDescripcion.Text = be.MetaDescripcion;
        txtImagen.Text = be.Imagen;
        txtUrl.Text = be.Url;
        

        //Datos de Auditoria
        Util.SelectCombo(ddlEstado, be.Estado);
        txtUsuarioCreacion.Text = be.UsuarioCreacion;
        txtFechaCreacion.Text = be.FechaCreacion.ToString(AppSettings.FormatoFechaHora);
        txtUsuarioModificacion.Text = be.UsuarioModificacion;
        txtFechaModificacion.Text = be.FechaModificacion.ToString(AppSettings.FormatoFechaHora);
        ddlEstado.Enabled = false;
        if (pstrAccion == "d")
        {
            Master.MenuAplicar.Visible = false; //Remueve el boton aplicar
            txtTitulo.Enabled = false;
            txtCodigoContenido.Enabled = false;
            ddlEstado.Enabled = false;

            if (be.Estado == Constantes.ESTADO_ACTIVO)
            {
                Util.SelectCombo(ddlEstado, Constantes.ESTADO_INACTIVO);
            }
            else
            {
                Util.SelectCombo(ddlEstado, Constantes.ESTADO_ACTIVO);
            }
        }
    }

    protected bool Validar(out WCContenido.BEContenido pbe)
    {
        pbe = new WCContenido.BEContenido();
        string strDescripcion = string.Empty, strCodigoContenido = string.Empty;
        string strUsuario = string.Empty, strEstado = string.Empty, strImagen = string.Empty;
        string strAccion = string.Empty, strDominio = string.Empty, strIdSuit = string.Empty;

        strAccion = hfAccion.Value; //a: n-Nuevo, e-Editar, v-Ver

        strCodigoContenido = txtCodigoContenido.Text.Trim();


        strEstado = ddlEstado.SelectedValue;
        strUsuario = UsuarioSistema.CodigoUsuario;

        //Inicializa
        WCContenido.BEContenido be = new WCContenido.BEContenido
        {
            IdContenido = Int32.Parse(hfIdContenido.Value),
            IdSeccion = int.Parse(hfIdSeccion.Value),
            CodigoContenido = strCodigoContenido,
            Titulo = txtTitulo.Text.Trim(),
            TextoCompleto = txtTextoCompleto.Text.Trim(),
            TextoIntro = txtIntroduccion.Text.Trim(),
            MetaClave = txtMetaClave.Text.Trim(),
            MetaDescripcion = txtMetaDescripcion.Text.Trim(),
            Imagen = txtImagen.Text.Trim(),
            Url = txtUrl.Text.Trim(),

            Estado = strEstado,
            UsuarioCreacion = strUsuario,
            FechaCreacion = DateTime.Now,
            UsuarioModificacion = strUsuario,
            FechaModificacion = DateTime.Now
        };
        pbe = be;
        return true;
    }

    protected void Guardar(string pstrEvento) //G:Grabar, A:Aplicar
    {
        string strAccion = string.Empty;
        string strUsuario = string.Empty;

        strAccion = hfAccion.Value; //a: n-Nuevo, e-Editar, v-Ver
        strUsuario = UsuarioSistema.CodigoUsuario;

        WCContenido.BEContenido be;

        if (!Validar(out be)) //Valida e Inicializa
        {
            return;
        }

        //Grabar
        switch (strAccion)
        {
            case "e": //Actualiza
                be = ActualizarContenido(be);
                if (be.Error != 0)
                {
                    Util.ejecutaScriptAJAX(this.Page, string.Format("alert('{0}');", Resources.resMensaje.msgErrorActualizar));
                }
                else
                {
                    txtUsuarioModificacion.Text = strUsuario;
                    txtFechaModificacion.Text = be.FechaModificacion.ToString(AppSettings.FormatoFechaHora);
                }
                break;
        }
        if (pstrEvento == "G") { if (be.Error == 0) { Redireciona(); } }
    }

    protected void Salir()
    {
        Redireciona();
    }

    protected void Redireciona()
    {
        string strCadena = string.Format("?a={0}&i={1}&t=1&param1={2}", "e", hfIdSeccion.Value, Request.QueryString["param1"]);
        Util.Redireciona(RUTA_EDICION, strCadena, true);
    }

    #endregion

    #region LLAMADAS A WEBSERVICES

    /// <summary>
    /// Método Lista Niveles de Alerta
    /// </summary>
    /// <returns>Devuelve un DataSet</returns>
    protected WCContenido.BEContenido InsertarContenido(WCContenido.BEContenido pbe)
    {
        WCContenido.BEContenido be = new WCContenido.BEContenido();
        DataTable dt = new DataTable();
        using (var client = new ServiceClient<WCContenido.IWCContenido>("BasicHttpBinding_IWCContenido"))
        {
            var response = client.ServiceOperation<WCContenido.BEContenido>(
               c => c.Insertar(pbe)
               );
            ;
            be = response;
        }
        return be;
    }

    /// <summary>
    /// Método Obtiene Nivel de Alerta
    /// </summary>
    /// <returns>Devuelve un Objeto</returns>
    protected WCContenido.BEContenido ObtenerContenido(WCContenido.BEContenido pbe)
    {
        WCContenido.BEContenido be = new WCContenido.BEContenido();
        DataTable dt = new DataTable();
        using (var client = new ServiceClient<WCContenido.IWCContenido>("BasicHttpBinding_IWCContenido"))
        {
            var response = client.ServiceOperation<WCContenido.BEContenido>(c => c.Obtener(pbe));
            be = response;
        }
        return be;
    }

    /// <summary>
    /// Método Actualiza un Nivele de Alerta
    /// </summary>
    /// <returns>Devuelve un DataSet</returns>
    protected WCContenido.BEContenido ActualizarContenido(WCContenido.BEContenido pbe)
    {
        WCContenido.BEContenido be = new WCContenido.BEContenido();
        DataTable dt = new DataTable();
        using (var client = new ServiceClient<WCContenido.IWCContenido>("BasicHttpBinding_IWCContenido"))
        {
            var response = client.ServiceOperation<WCContenido.BEContenido>(
               c => c.Actualizar(pbe)
               );
            ;
            be = response;
        }
        return be;
    }

    /// <summary>
    /// Método Elimina un Nivele de Alerta
    /// </summary>
    /// <returns>Devuelve un DataSet</returns>
    protected WCContenido.BEContenido EliminaContenido(WCContenido.BEContenido pbe)
    {
        WCContenido.BEContenido be = new WCContenido.BEContenido();
        DataTable dt = new DataTable();
        using (var client = new ServiceClient<WCContenido.IWCContenido>("BasicHttpBinding_IWCContenido"))
        {
            var response = client.ServiceOperation<WCContenido.BEContenido>(
               c => c.Eliminar(pbe)
               );
            ;
            be = response;
        }
        return be;
    }


    /// <summary>
    /// Método Lista Datos de ParametroDetalle
    /// </summary>
    /// <returns>Devuelve un dataTable</returns>
    protected DataTable ListarParametroDetalle(int pintidCompania, int pintIdAplicacion, string pstrParametro)
    {
        WCParametroDetalle.BEParametroDetalle be = new WCParametroDetalle.BEParametroDetalle();
        be.IdCompania = pintidCompania;
        be.IdAplicacion = pintIdAplicacion;
        be.Parametro = pstrParametro;
        DataTable dt = new DataTable();
        using (var client = new ServiceClient<WCParametroDetalle.IWCParametroDetalle>("BasicHttpBinding_IWCParametroDetalle"))
        {
            var response = client.ServiceOperation<DataTable>(c => c.Listar(be).Tables[0]);
            dt = response;
        }
        return dt;
    }



    #endregion

}